Random numbers are used for various applications in many electronics systems. In encryption application, random number generators are used in some forms of cryptography to provide secure transmission of messages, such that only an intended receiving end can understand the message (i.e., voice or data) transmitted by an authorized transmitting end. However, as unauthorized receivers and unauthorized transmitters become more sophisticated in breaking the generation process of the random numbers that are used in encryption of messages, the need becomes greater for generating unpredictable random numbers for secured communications.
In addition to the security breach caused by unauthorized parties, the random number generator may generate non-random numbers during operation. Heat is typically generated in the hardware component of the random number generator when it generates a series of 1's and 0's over a time period. For example, generating a 1 bit could consume more power than a 0 bit. If a long sequence of 1 bits is generated, the electrical circuit becomes hot. If the circuit generates a 1 bit if it is hot, the circuit will “latch up” and generates only 1 bits. A different effect may occur if a 0 bit is generated when the circuit is hot. In this case a long sub-sequence of 1 bits becomes too rare, which constitute a non-random property. In cryptographic application any of these non-randomness may have catastrophic consequences: the security will be breached.
Accordingly, both the detection of hardware tampering and a component failure are necessary when conducting randomness tests. Conventional randomness tests are performed through extensive statistical testing, such as chi-squared tests, delta tests, and the like, on a sequence of generated random numbers. However, such tests are very expensive to be performed in real time as they require a great amount of computational processing power.